import { createRouter, createWebHashHistory } from "vue-router";

// 获取 views 文件夹中所有页面的配置文件 page.js
const pages = import.meta.glob('../views/**/page.js', {
    eager: true,
    import: 'default',
});

// 获取 views 文件夹中所有页面的 Vue 组件
const pageComps = import.meta.glob('../views/**/index.vue', {
    eager: true,
    import: 'default',
});

// 处理路由配置
const routes = Object.entries(pages).map(([path, meta]) => {
    // 去除路径上的冗余部分，保留文件夹名称作为路由路径
    let routePath = path.replace('../views', '').replace('/page.js', '');
    // 特殊处理首页路径
    if (routePath === '/home') routePath = '/';

    // 构建路由名称
    const name = routePath.split('/').filter(Boolean).join('-') || 'index';

    // 获取对应的 Vue 组件
    const component = pageComps[path.replace('page.js', 'index.vue')];

    // 如果 page.js 中有 children 配置，则展开子路由
    let children = meta?.children?.map(childMeta => {
        childMeta.pageJSPath = undefined;
        const childPath = childMeta.path.replace('../views', '').replace('/page.js', '');
        const childName = childPath.split('/').filter(Boolean).join('-') || 'index';
        const childComponent = pageComps[childMeta.pageJSPath.replace('page.js', 'index.vue')];
        return {
            ...childMeta,
            path: childPath,
            name: childName,
            component: childComponent,
        };
    });

    return {
        path: routePath,
        name,
        component,
        meta,
        children,
    };
});

// 创建路由实例
const router = createRouter({
    history: createWebHashHistory(),
    routes,
});

export default router;